from enum import IntEnum
from typing import overload, NewType, Optional, Tuple

from OCC.Core.Standard import *
from OCC.Core.NCollection import *
from OCC.Core.BRepTopAdaptor import *
from OCC.Core.IntRes2d import *
from OCC.Core.IntSurf import *
from OCC.Core.IntPatch import *
from OCC.Core.TopOpeBRepDS import *
from OCC.Core.TopoDS import *
from OCC.Core.TopOpeBRepTool import *
from OCC.Core.Geom2dAdaptor import *
from OCC.Core.TCollection import *
from OCC.Core.Bnd import *
from OCC.Core.BRepAdaptor import *
from OCC.Core.TopAbs import *
from OCC.Core.gp import *
from OCC.Core.TopTools import *
from OCC.Core.Geom2d import *
from OCC.Core.Geom import *

TopOpeBRep_PEdgesIntersector = NewType('TopOpeBRep_PEdgesIntersector', TopOpeBRep_EdgesIntersector)
TopOpeBRep_PFacesFiller = NewType('TopOpeBRep_PFacesFiller', TopOpeBRep_FacesFiller)
TopOpeBRep_PFacesIntersector = NewType('TopOpeBRep_PFacesIntersector', TopOpeBRep_FacesIntersector)
TopOpeBRep_PIntRes2d_IntersectionPoint = NewType('TopOpeBRep_PIntRes2d_IntersectionPoint', IntRes2d_IntersectionPoint)
TopOpeBRep_PLineInter = NewType('TopOpeBRep_PLineInter', TopOpeBRep_LineInter)
TopOpeBRep_PPntOn2S = NewType('TopOpeBRep_PPntOn2S', IntSurf_PntOn2S)
TopOpeBRep_PThePointOfIntersection = NewType('TopOpeBRep_PThePointOfIntersection', IntPatch_Point)

class TopOpeBRep_Array1OfLineInter:
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, theLower: int, theUpper: int) -> None: ...
    def __getitem__(self, index: int) -> TopOpeBRep_LineInter: ...
    def __setitem__(self, index: int, value: TopOpeBRep_LineInter) -> None: ...
    def __len__(self) -> int: ...
    def __iter__(self) -> Iterator[TopOpeBRep_LineInter]: ...
    def next(self) -> TopOpeBRep_LineInter: ...
    __next__ = next
    def Init(self, theValue: TopOpeBRep_LineInter) -> None: ...
    def Size(self) -> int: ...
    def Length(self) -> int: ...
    def IsEmpty(self) -> bool: ...
    def Lower(self) -> int: ...
    def Upper(self) -> int: ...
    def IsDetectable(self) -> bool: ...
    def IsAllocated(self) -> bool: ...
    def First(self) -> TopOpeBRep_LineInter: ...
    def Last(self) -> TopOpeBRep_LineInter: ...
    def Value(self, theIndex: int) -> TopOpeBRep_LineInter: ...
    def SetValue(self, theIndex: int, theValue: TopOpeBRep_LineInter) -> None: ...

class TopOpeBRep_Array1OfVPointInter:
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, theLower: int, theUpper: int) -> None: ...
    def __getitem__(self, index: int) -> TopOpeBRep_VPointInter: ...
    def __setitem__(self, index: int, value: TopOpeBRep_VPointInter) -> None: ...
    def __len__(self) -> int: ...
    def __iter__(self) -> Iterator[TopOpeBRep_VPointInter]: ...
    def next(self) -> TopOpeBRep_VPointInter: ...
    __next__ = next
    def Init(self, theValue: TopOpeBRep_VPointInter) -> None: ...
    def Size(self) -> int: ...
    def Length(self) -> int: ...
    def IsEmpty(self) -> bool: ...
    def Lower(self) -> int: ...
    def Upper(self) -> int: ...
    def IsDetectable(self) -> bool: ...
    def IsAllocated(self) -> bool: ...
    def First(self) -> TopOpeBRep_VPointInter: ...
    def Last(self) -> TopOpeBRep_VPointInter: ...
    def Value(self, theIndex: int) -> TopOpeBRep_VPointInter: ...
    def SetValue(self, theIndex: int, theValue: TopOpeBRep_VPointInter) -> None: ...

class TopOpeBRep_ListOfBipoint:
    def __init__(self) -> None: ...
    def __len__(self) -> int: ...
    def Size(self) -> int: ...
    def Clear(self) -> None: ...
    def First(self) -> TopOpeBRep_Bipoint: ...
    def Last(self) -> TopOpeBRep_Bipoint: ...
    def Append(self, theItem: TopOpeBRep_Bipoint) -> TopOpeBRep_Bipoint: ...
    def Prepend(self, theItem: TopOpeBRep_Bipoint) -> TopOpeBRep_Bipoint: ...
    def RemoveFirst(self) -> None: ...
    def Reverse(self) -> None: ...
    def Value(self, theIndex: int) -> TopOpeBRep_Bipoint: ...
    def SetValue(self, theIndex: int, theValue: TopOpeBRep_Bipoint) -> None: ...

class TopOpeBRep_SequenceOfPoint2d:
    def __init__(self) -> None: ...
    def __len__(self) -> int: ...
    def Size(self) -> int: ...
    def Clear(self) -> None: ...
    def First(self) -> TopOpeBRep_Point2d: ...
    def Last(self) -> TopOpeBRep_Point2d: ...
    def Length(self) -> int: ...
    def Append(self, theItem: TopOpeBRep_Point2d) -> TopOpeBRep_Point2d: ...
    def Prepend(self, theItem: TopOpeBRep_Point2d) -> TopOpeBRep_Point2d: ...
    def RemoveFirst(self) -> None: ...
    def Reverse(self) -> None: ...
    def Value(self, theIndex: int) -> TopOpeBRep_Point2d: ...
    def SetValue(self, theIndex: int, theValue: TopOpeBRep_Point2d) -> None: ...

class TopOpeBRep_P2Dstatus(IntEnum):
    TopOpeBRep_P2DUNK: int = ...
    TopOpeBRep_P2DINT: int = ...
    TopOpeBRep_P2DSGF: int = ...
    TopOpeBRep_P2DSGL: int = ...
    TopOpeBRep_P2DNEW: int = ...

TopOpeBRep_P2DUNK = TopOpeBRep_P2Dstatus.TopOpeBRep_P2DUNK
TopOpeBRep_P2DINT = TopOpeBRep_P2Dstatus.TopOpeBRep_P2DINT
TopOpeBRep_P2DSGF = TopOpeBRep_P2Dstatus.TopOpeBRep_P2DSGF
TopOpeBRep_P2DSGL = TopOpeBRep_P2Dstatus.TopOpeBRep_P2DSGL
TopOpeBRep_P2DNEW = TopOpeBRep_P2Dstatus.TopOpeBRep_P2DNEW

class TopOpeBRep_TypeLineCurve(IntEnum):
    TopOpeBRep_ANALYTIC: int = ...
    TopOpeBRep_RESTRICTION: int = ...
    TopOpeBRep_WALKING: int = ...
    TopOpeBRep_LINE: int = ...
    TopOpeBRep_CIRCLE: int = ...
    TopOpeBRep_ELLIPSE: int = ...
    TopOpeBRep_PARABOLA: int = ...
    TopOpeBRep_HYPERBOLA: int = ...
    TopOpeBRep_OTHERTYPE: int = ...

TopOpeBRep_ANALYTIC = TopOpeBRep_TypeLineCurve.TopOpeBRep_ANALYTIC
TopOpeBRep_RESTRICTION = TopOpeBRep_TypeLineCurve.TopOpeBRep_RESTRICTION
TopOpeBRep_WALKING = TopOpeBRep_TypeLineCurve.TopOpeBRep_WALKING
TopOpeBRep_LINE = TopOpeBRep_TypeLineCurve.TopOpeBRep_LINE
TopOpeBRep_CIRCLE = TopOpeBRep_TypeLineCurve.TopOpeBRep_CIRCLE
TopOpeBRep_ELLIPSE = TopOpeBRep_TypeLineCurve.TopOpeBRep_ELLIPSE
TopOpeBRep_PARABOLA = TopOpeBRep_TypeLineCurve.TopOpeBRep_PARABOLA
TopOpeBRep_HYPERBOLA = TopOpeBRep_TypeLineCurve.TopOpeBRep_HYPERBOLA
TopOpeBRep_OTHERTYPE = TopOpeBRep_TypeLineCurve.TopOpeBRep_OTHERTYPE

class topopebrep:
    pass

class TopOpeBRep_Bipoint:
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, I1: int, I2: int) -> None: ...
    def I1(self) -> int: ...
    def I2(self) -> int: ...

class TopOpeBRep_DSFiller:
    def __init__(self) -> None: ...
    def ChangeEdgesFiller(self) -> TopOpeBRep_EdgesFiller: ...
    def ChangeFaceEdgeFiller(self) -> TopOpeBRep_FaceEdgeFiller: ...
    def ChangeFacesFiller(self) -> TopOpeBRep_FacesFiller: ...
    def ChangeShapeIntersector(self) -> TopOpeBRep_ShapeIntersector: ...
    def ChangeShapeIntersector2d(self) -> TopOpeBRep_ShapeIntersector2d: ...
    def Checker(self, HDS: TopOpeBRepDS_HDataStructure) -> None: ...
    def Complete(self, HDS: TopOpeBRepDS_HDataStructure) -> None: ...
    def CompleteDS(self, HDS: TopOpeBRepDS_HDataStructure) -> None: ...
    def CompleteDS2d(self, HDS: TopOpeBRepDS_HDataStructure) -> None: ...
    def Filter(self, HDS: TopOpeBRepDS_HDataStructure) -> None: ...
    def GapFiller(self, HDS: TopOpeBRepDS_HDataStructure) -> None: ...
    def Insert(self, S1: TopoDS_Shape, S2: TopoDS_Shape, HDS: TopOpeBRepDS_HDataStructure, orientFORWARD: Optional[bool] = True) -> None: ...
    def Insert1d(self, S1: TopoDS_Shape, S2: TopoDS_Shape, F1: TopoDS_Face, F2: TopoDS_Face, HDS: TopOpeBRepDS_HDataStructure, orientFORWARD: Optional[bool] = False) -> None: ...
    def Insert2d(self, S1: TopoDS_Shape, S2: TopoDS_Shape, HDS: TopOpeBRepDS_HDataStructure) -> None: ...
    def InsertIntersection(self, S1: TopoDS_Shape, S2: TopoDS_Shape, HDS: TopOpeBRepDS_HDataStructure, orientFORWARD: Optional[bool] = True) -> None: ...
    def InsertIntersection2d(self, S1: TopoDS_Shape, S2: TopoDS_Shape, HDS: TopOpeBRepDS_HDataStructure) -> None: ...
    def IsContext1d(self, S: TopoDS_Shape) -> bool: ...
    def IsMadeOf1d(self, S: TopoDS_Shape) -> bool: ...
    def PShapeClassifier(self) -> TopOpeBRepTool_PShapeClassifier: ...
    def Reducer(self, HDS: TopOpeBRepDS_HDataStructure) -> None: ...
    def RemoveUnsharedGeometry(self, HDS: TopOpeBRepDS_HDataStructure) -> None: ...

class TopOpeBRep_EdgesFiller:
    def __init__(self) -> None: ...
    @overload
    def Face(self, I: int, F: TopoDS_Shape) -> None: ...
    @overload
    def Face(self, I: int) -> TopoDS_Shape: ...
    def Insert(self, E1: TopoDS_Shape, E2: TopoDS_Shape, EI: TopOpeBRep_EdgesIntersector, HDS: TopOpeBRepDS_HDataStructure) -> None: ...

class TopOpeBRep_EdgesIntersector:
    def __init__(self) -> None: ...
    def Curve(self, Index: int) -> Geom2dAdaptor_Curve: ...
    @overload
    def Dimension(self, D: int) -> None: ...
    @overload
    def Dimension(self) -> int: ...
    def Dump(self, str: str, ie1: Optional[int] = 0, ie2: Optional[int] = 0) -> None: ...
    def Edge(self, Index: int) -> TopoDS_Shape: ...
    def Face(self, Index: int) -> TopoDS_Shape: ...
    def FacesSameOriented(self) -> bool: ...
    def ForceTolerances(self, Tol1: float, Tol2: float) -> None: ...
    def HasSegment(self) -> bool: ...
    def InitPoint(self, selectkeep: Optional[bool] = True) -> None: ...
    def IsEmpty(self) -> bool: ...
    def MorePoint(self) -> bool: ...
    def NbPoints(self) -> int: ...
    def NbSegments(self) -> int: ...
    def NextPoint(self) -> None: ...
    def Perform(self, E1: TopoDS_Shape, E2: TopoDS_Shape, ReduceSegments: Optional[bool] = True) -> None: ...
    @overload
    def Point(self) -> TopOpeBRep_Point2d: ...
    @overload
    def Point(self, I: int) -> TopOpeBRep_Point2d: ...
    def Points(self) -> TopOpeBRep_SequenceOfPoint2d: ...
    def ReduceSegment(self, P1: TopOpeBRep_Point2d, P2: TopOpeBRep_Point2d, Pn: TopOpeBRep_Point2d) -> bool: ...
    def SameDomain(self) -> bool: ...
    @overload
    def SetFaces(self, F1: TopoDS_Shape, F2: TopoDS_Shape) -> None: ...
    @overload
    def SetFaces(self, F1: TopoDS_Shape, F2: TopoDS_Shape, B1: Bnd_Box, B2: Bnd_Box) -> None: ...
    def Status1(self) -> TopOpeBRep_P2Dstatus: ...
    def Surface(self, Index: int) -> BRepAdaptor_Surface: ...
    def SurfacesSameOriented(self) -> bool: ...
    def ToleranceMax(self) -> float: ...
    def Tolerances(self) -> Tuple[float, float]: ...

class TopOpeBRep_FFDumper(Standard_Transient):
    def __init__(self, PFF: TopOpeBRep_PFacesFiller) -> None: ...
    def DumpDSP(self, VP: TopOpeBRep_VPointInter, GK: TopOpeBRepDS_Kind, G: int, newinDS: bool) -> None: ...
    @overload
    def DumpLine(self, I: int) -> None: ...
    @overload
    def DumpLine(self, L: TopOpeBRep_LineInter) -> None: ...
    @overload
    def DumpVP(self, VP: TopOpeBRep_VPointInter) -> None: ...
    @overload
    def DumpVP(self, VP: TopOpeBRep_VPointInter, ISI: int) -> None: ...
    def ExploreIndex(self, S: TopoDS_Shape, ISI: int) -> int: ...
    def Init(self, PFF: TopOpeBRep_PFacesFiller) -> None: ...
    def PFacesFillerDummy(self) -> TopOpeBRep_PFacesFiller: ...

class TopOpeBRep_FFTransitionTool:
    @staticmethod
    def ProcessEdgeONTransition(VP: TopOpeBRep_VPointInter, Index: int, R: TopoDS_Shape, E: TopoDS_Shape, F: TopoDS_Shape) -> TopOpeBRepDS_Transition: ...
    @staticmethod
    def ProcessEdgeTransition(P: TopOpeBRep_VPointInter, Index: int, LineOrientation: TopAbs_Orientation) -> TopOpeBRepDS_Transition: ...
    @staticmethod
    def ProcessFaceTransition(L: TopOpeBRep_LineInter, Index: int, FaceOrientation: TopAbs_Orientation) -> TopOpeBRepDS_Transition: ...
    @overload
    @staticmethod
    def ProcessLineTransition(P: TopOpeBRep_VPointInter, Index: int, EdgeOrientation: TopAbs_Orientation) -> TopOpeBRepDS_Transition: ...
    @overload
    @staticmethod
    def ProcessLineTransition(P: TopOpeBRep_VPointInter, L: TopOpeBRep_LineInter) -> TopOpeBRepDS_Transition: ...

class TopOpeBRep_FaceEdgeFiller:
    def __init__(self) -> None: ...
    def Insert(self, F: TopoDS_Shape, E: TopoDS_Shape, FEINT: TopOpeBRep_FaceEdgeIntersector, HDS: TopOpeBRepDS_HDataStructure) -> None: ...

class TopOpeBRep_FaceEdgeIntersector:
    def __init__(self) -> None: ...
    def ForceTolerance(self, tol: float) -> None: ...
    def Index(self) -> int: ...
    def InitPoint(self) -> None: ...
    def IsEmpty(self) -> bool: ...
    @overload
    def IsVertex(self, S: TopoDS_Shape, P: gp_Pnt, Tol: float, V: TopoDS_Vertex) -> bool: ...
    @overload
    def IsVertex(self, I: int, V: TopoDS_Vertex) -> bool: ...
    def MorePoint(self) -> bool: ...
    def NbPoints(self) -> int: ...
    def NextPoint(self) -> None: ...
    def Parameter(self) -> float: ...
    def Perform(self, F: TopoDS_Shape, E: TopoDS_Shape) -> None: ...
    def Shape(self, Index: int) -> TopoDS_Shape: ...
    def State(self) -> TopAbs_State: ...
    def Tolerance(self) -> float: ...
    def Transition(self, Index: int, FaceOrientation: TopAbs_Orientation) -> TopOpeBRepDS_Transition: ...
    def UVPoint(self, P: gp_Pnt2d) -> None: ...
    def Value(self) -> gp_Pnt: ...

class TopOpeBRep_FacesFiller:
    def __init__(self) -> None: ...
    def AddShapesLine(self) -> None: ...
    def ChangeDataStructure(self) -> TopOpeBRepDS_DataStructure: ...
    def ChangeFacesIntersector(self) -> TopOpeBRep_FacesIntersector: ...
    def ChangePointClassifier(self) -> TopOpeBRep_PointClassifier: ...
    def CheckLine(self, L: TopOpeBRep_LineInter) -> bool: ...
    @staticmethod
    def EqualpPonR(Lrest: TopOpeBRep_LineInter, VP1: TopOpeBRep_VPointInter, VP2: TopOpeBRep_VPointInter) -> bool: ...
    def Face(self, I: int) -> TopoDS_Face: ...
    @overload
    def FaceFaceTransition(self, L: TopOpeBRep_LineInter, I: int) -> TopOpeBRepDS_Transition: ...
    @overload
    def FaceFaceTransition(self, I: int) -> TopOpeBRepDS_Transition: ...
    def FillLine(self) -> None: ...
    def FillLineVPonR(self) -> None: ...
    def GetESL(self, LES: TopTools_ListOfShape) -> None: ...
    @overload
    def GetFFGeometry(self, DSP: TopOpeBRepDS_Point, K: TopOpeBRepDS_Kind) -> Tuple[bool, int]: ...
    @overload
    def GetFFGeometry(self, VP: TopOpeBRep_VPointInter, K: TopOpeBRepDS_Kind) -> Tuple[bool, int]: ...
    def GetGeometry(self, IT: TopOpeBRepDS_ListIteratorOfListOfInterference, VP: TopOpeBRep_VPointInter, K: TopOpeBRepDS_Kind) -> Tuple[bool, int]: ...
    def GetTraceIndex(self) -> Tuple[int, int]: ...
    def HDataStructure(self) -> TopOpeBRepDS_HDataStructure: ...
    def Insert(self, F1: TopoDS_Shape, F2: TopoDS_Shape, FACINT: TopOpeBRep_FacesIntersector, HDS: TopOpeBRepDS_HDataStructure) -> None: ...
    @staticmethod
    def IsVPtransLok(L: TopOpeBRep_LineInter, iVP: int, SI12: int, T: TopOpeBRepDS_Transition) -> bool: ...
    @staticmethod
    def LSameDomainERL(L: TopOpeBRep_LineInter, ERL: TopTools_ListOfShape) -> bool: ...
    @staticmethod
    def Lminmax(L: TopOpeBRep_LineInter) -> Tuple[float, float]: ...
    def LoadLine(self, L: TopOpeBRep_LineInter) -> None: ...
    def MakeGeometry(self, VP: TopOpeBRep_VPointInter, ShapeIndex: int, K: TopOpeBRepDS_Kind) -> int: ...
    def PDataStructureDummy(self) -> TopOpeBRepDS_PDataStructure: ...
    def PFacesIntersectorDummy(self) -> TopOpeBRep_PFacesIntersector: ...
    def PLineInterDummy(self) -> TopOpeBRep_PLineInter: ...
    def PShapeClassifier(self) -> TopOpeBRepTool_PShapeClassifier: ...
    def ProcessLine(self) -> None: ...
    def ProcessRLine(self) -> None: ...
    def ProcessSectionEdges(self) -> None: ...
    def ProcessVPInotonR(self, VPI: TopOpeBRep_VPointInterIterator) -> None: ...
    def ProcessVPIonR(self, VPI: TopOpeBRep_VPointInterIterator, trans1: TopOpeBRepDS_Transition, F1: TopoDS_Shape, ShapeIndex: int) -> None: ...
    def ProcessVPR(self, FF: TopOpeBRep_FacesFiller, VP: TopOpeBRep_VPointInter) -> None: ...
    def ProcessVPnotonR(self, VP: TopOpeBRep_VPointInter) -> None: ...
    def ProcessVPonR(self, VP: TopOpeBRep_VPointInter, trans1: TopOpeBRepDS_Transition, F1: TopoDS_Shape, ShapeIndex: int) -> None: ...
    def ProcessVPonclosingR(self, VP: TopOpeBRep_VPointInter, F1: TopoDS_Shape, ShapeIndex: int, transEdge: TopOpeBRepDS_Transition, PVKind: TopOpeBRepDS_Kind, PVIndex: int, EPIfound: bool, IEPI: TopOpeBRepDS_Interference) -> None: ...
    def ProcessVPondgE(self, VP: TopOpeBRep_VPointInter, ShapeIndex: int, PVKind: TopOpeBRepDS_Kind, IEPI: TopOpeBRepDS_Interference, ICPI: TopOpeBRepDS_Interference) -> Tuple[bool, int, bool, bool]: ...
    def ResetDSC(self) -> None: ...
    def SetPShapeClassifier(self, PSC: TopOpeBRepTool_PShapeClassifier) -> None: ...
    def SetTraceIndex(self, exF1: int, exF2: int) -> None: ...
    def StoreCurveInterference(self, I: TopOpeBRepDS_Interference) -> None: ...
    @staticmethod
    def TransvpOK(L: TopOpeBRep_LineInter, iVP: int, SI: int, isINOUT: bool) -> bool: ...
    @staticmethod
    def VPParamOnER(vp: TopOpeBRep_VPointInter, Lrest: TopOpeBRep_LineInter) -> float: ...
    @overload
    def VP_Position(self, FACINT: TopOpeBRep_FacesIntersector) -> None: ...
    @overload
    def VP_Position(self, L: TopOpeBRep_LineInter) -> None: ...
    @overload
    def VP_Position(self, VP: TopOpeBRep_VPointInter, VPC: TopOpeBRep_VPointInterClassifier) -> None: ...
    def VP_PositionOnL(self, L: TopOpeBRep_LineInter) -> None: ...
    def VP_PositionOnR(self, L: TopOpeBRep_LineInter) -> None: ...

class TopOpeBRep_FacesIntersector:
    def __init__(self) -> None: ...
    def ChangeLine(self, IL: int) -> TopOpeBRep_LineInter: ...
    def CurrentLine(self) -> TopOpeBRep_LineInter: ...
    def CurrentLineIndex(self) -> int: ...
    def Face(self, Index: int) -> TopoDS_Shape: ...
    def ForceTolerances(self, tolarc: float, toltang: float) -> None: ...
    def GetTolerances(self) -> Tuple[float, float]: ...
    def InitLine(self) -> None: ...
    def IsDone(self) -> bool: ...
    def IsEmpty(self) -> bool: ...
    def IsRestriction(self, E: TopoDS_Shape) -> bool: ...
    def Lines(self) -> TopOpeBRep_HArray1OfLineInter: ...
    def MoreLine(self) -> bool: ...
    def NbLines(self) -> int: ...
    def NextLine(self) -> None: ...
    @overload
    def Perform(self, S1: TopoDS_Shape, S2: TopoDS_Shape) -> None: ...
    @overload
    def Perform(self, S1: TopoDS_Shape, S2: TopoDS_Shape, B1: Bnd_Box, B2: Bnd_Box) -> None: ...
    def PrepareLines(self) -> None: ...
    def Restrictions(self) -> TopTools_IndexedMapOfShape: ...
    def SameDomain(self) -> bool: ...
    def SurfacesSameOriented(self) -> bool: ...

class TopOpeBRep_GeomTool:
    @staticmethod
    def MakeBSpline1fromWALKING2d(L: TopOpeBRep_LineInter, SI: int) -> Geom2d_Curve: ...
    @staticmethod
    def MakeBSpline1fromWALKING3d(L: TopOpeBRep_LineInter) -> Geom_Curve: ...
    @staticmethod
    def MakeCurve(min: float, max: float, L: TopOpeBRep_LineInter, C: Geom_Curve) -> None: ...
    @staticmethod
    def MakeCurves(min: float, max: float, L: TopOpeBRep_LineInter, S1: TopoDS_Shape, S2: TopoDS_Shape, C: TopOpeBRepDS_Curve, PC1: Geom2d_Curve, PC2: Geom2d_Curve) -> None: ...

class TopOpeBRep_Hctxee2d(Standard_Transient):
    def __init__(self) -> None: ...
    def Curve(self, I: int) -> Geom2dAdaptor_Curve: ...
    def Domain(self, I: int) -> IntRes2d_Domain: ...
    def Edge(self, I: int) -> TopoDS_Shape: ...
    def SetEdges(self, E1: TopoDS_Edge, E2: TopoDS_Edge, BAS1: BRepAdaptor_Surface, BAS2: BRepAdaptor_Surface) -> None: ...

class TopOpeBRep_Hctxff2d(Standard_Transient):
    def __init__(self) -> None: ...
    def Face(self, I: int) -> TopoDS_Face: ...
    def FaceSameOrientedWithRef(self, I: int) -> bool: ...
    def FacesSameOriented(self) -> bool: ...
    def GetMaxTolerance(self) -> float: ...
    def GetTolerances(self) -> Tuple[float, float]: ...
    def HSurface(self, I: int) -> BRepAdaptor_Surface: ...
    def SetFaces(self, F1: TopoDS_Face, F2: TopoDS_Face) -> None: ...
    def SetHSurfaces(self, S1: BRepAdaptor_Surface, S2: BRepAdaptor_Surface) -> None: ...
    def SetTolerances(self, Tol1: float, Tol2: float) -> None: ...
    def SurfacesSameOriented(self) -> bool: ...

class TopOpeBRep_LineInter:
    def __init__(self) -> None: ...
    def Arc(self) -> TopoDS_Shape: ...
    def ArcIsEdge(self, I: int) -> bool: ...
    def Bounds(self) -> Tuple[float, float]: ...
    def ChangeVPoint(self, I: int) -> TopOpeBRep_VPointInter: ...
    def ComputeFaceFaceTransition(self) -> None: ...
    @overload
    def Curve(self) -> Geom_Curve: ...
    @overload
    def Curve(self, parmin: float, parmax: float) -> Geom_Curve: ...
    def DumpBipoint(self, B: TopOpeBRep_Bipoint, s1: str, s2: str) -> None: ...
    def DumpType(self) -> None: ...
    def DumpVPoint(self, I: int, s1: str, s2: str) -> None: ...
    def FaceFaceTransition(self, I: int) -> TopOpeBRepDS_Transition: ...
    def GetTraceIndex(self) -> Tuple[int, int]: ...
    def HasFirstPoint(self) -> bool: ...
    def HasLastPoint(self) -> bool: ...
    def HasVInternal(self) -> bool: ...
    def HasVPonR(self) -> bool: ...
    def INL(self) -> bool: ...
    @overload
    def Index(self, I: int) -> None: ...
    @overload
    def Index(self) -> int: ...
    def IsPeriodic(self) -> bool: ...
    def IsVClosed(self) -> bool: ...
    def LineG(self) -> IntPatch_GLine: ...
    def LineR(self) -> IntPatch_RLine: ...
    def LineW(self) -> IntPatch_WLine: ...
    def NbVPoint(self) -> int: ...
    def NbWPoint(self) -> int: ...
    def OK(self) -> bool: ...
    def Period(self) -> float: ...
    def SetFaces(self, F1: TopoDS_Face, F2: TopoDS_Face) -> None: ...
    def SetHasVPonR(self) -> None: ...
    def SetINL(self) -> None: ...
    def SetIsVClosed(self) -> None: ...
    def SetLine(self, L: IntPatch_Line, S1: BRepAdaptor_Surface, S2: BRepAdaptor_Surface) -> None: ...
    def SetOK(self, B: bool) -> None: ...
    def SetTraceIndex(self, exF1: int, exF2: int) -> None: ...
    def SetVPBounds(self) -> None: ...
    def SituationS1(self) -> IntSurf_Situation: ...
    def SituationS2(self) -> IntSurf_Situation: ...
    def TransitionOnS1(self) -> IntSurf_TypeTrans: ...
    def TransitionOnS2(self) -> IntSurf_TypeTrans: ...
    def TypeLineCurve(self) -> TopOpeBRep_TypeLineCurve: ...
    def VPBounds(self) -> Tuple[int, int, int]: ...
    def VPoint(self, I: int) -> TopOpeBRep_VPointInter: ...
    def WPoint(self, I: int) -> TopOpeBRep_WPointInter: ...

class TopOpeBRep_Point2d:
    def __init__(self) -> None: ...
    def ChangeTransition(self, I: int) -> TopOpeBRepDS_Transition: ...
    def Dump(self, ie1: Optional[int] = 0, ie2: Optional[int] = 0) -> None: ...
    def EdgesConfig(self) -> TopOpeBRepDS_Config: ...
    def HasPint(self) -> bool: ...
    def Hctxee2d(self) -> TopOpeBRep_Hctxee2d: ...
    def Hctxff2d(self) -> TopOpeBRep_Hctxff2d: ...
    def Index(self) -> int: ...
    def IsPointOfSegment(self) -> bool: ...
    def IsVertex(self, I: int) -> bool: ...
    def Keep(self) -> bool: ...
    def Parameter(self, I: int) -> float: ...
    def Pint(self) -> IntRes2d_IntersectionPoint: ...
    def SegmentAncestors(self) -> Tuple[bool, int, int]: ...
    def SetEdgesConfig(self, C: TopOpeBRepDS_Config) -> None: ...
    def SetHctxee2d(self, ee2d: TopOpeBRep_Hctxee2d) -> None: ...
    def SetHctxff2d(self, ff2d: TopOpeBRep_Hctxff2d) -> None: ...
    def SetIndex(self, X: int) -> None: ...
    def SetIsPointOfSegment(self, B: bool) -> None: ...
    def SetIsVertex(self, I: int, B: bool) -> None: ...
    def SetKeep(self, B: bool) -> None: ...
    def SetParameter(self, I: int, P: float) -> None: ...
    def SetPint(self, P: IntRes2d_IntersectionPoint) -> None: ...
    def SetSegmentAncestors(self, IP1: int, IP2: int) -> None: ...
    def SetStatus(self, S: TopOpeBRep_P2Dstatus) -> None: ...
    def SetTolerance(self, T: float) -> None: ...
    def SetTransition(self, I: int, T: TopOpeBRepDS_Transition) -> None: ...
    def SetValue(self, P: gp_Pnt) -> None: ...
    def SetValue2d(self, P: gp_Pnt2d) -> None: ...
    def SetVertex(self, I: int, V: TopoDS_Vertex) -> None: ...
    def Status(self) -> TopOpeBRep_P2Dstatus: ...
    def Tolerance(self) -> float: ...
    def Transition(self, I: int) -> TopOpeBRepDS_Transition: ...
    def Value(self) -> gp_Pnt: ...
    def Value2d(self) -> gp_Pnt2d: ...
    def Vertex(self, I: int) -> TopoDS_Vertex: ...

class TopOpeBRep_PointClassifier:
    def __init__(self) -> None: ...
    def Classify(self, F: TopoDS_Face, P: gp_Pnt2d, Tol: float) -> TopAbs_State: ...
    def Init(self) -> None: ...
    def Load(self, F: TopoDS_Face) -> None: ...
    def State(self) -> TopAbs_State: ...

class TopOpeBRep_PointGeomTool:
    @staticmethod
    def IsEqual(DSP1: TopOpeBRepDS_Point, DSP2: TopOpeBRepDS_Point) -> bool: ...
    @overload
    @staticmethod
    def MakePoint(IP: TopOpeBRep_VPointInter) -> TopOpeBRepDS_Point: ...
    @overload
    @staticmethod
    def MakePoint(P2D: TopOpeBRep_Point2d) -> TopOpeBRepDS_Point: ...
    @overload
    @staticmethod
    def MakePoint(FEI: TopOpeBRep_FaceEdgeIntersector) -> TopOpeBRepDS_Point: ...
    @overload
    @staticmethod
    def MakePoint(S: TopoDS_Shape) -> TopOpeBRepDS_Point: ...

class TopOpeBRep_ShapeIntersector:
    def __init__(self) -> None: ...
    def ChangeEdgesIntersector(self) -> TopOpeBRep_EdgesIntersector: ...
    def ChangeFaceEdgeIntersector(self) -> TopOpeBRep_FaceEdgeIntersector: ...
    def ChangeFacesIntersector(self) -> TopOpeBRep_FacesIntersector: ...
    def CurrentGeomShape(self, Index: int) -> TopoDS_Shape: ...
    def DumpCurrent(self, K: int) -> None: ...
    def GetTolerances(self) -> Tuple[float, float]: ...
    def Index(self, K: int) -> int: ...
    @overload
    def InitIntersection(self, S1: TopoDS_Shape, S2: TopoDS_Shape) -> None: ...
    @overload
    def InitIntersection(self, S1: TopoDS_Shape, S2: TopoDS_Shape, F1: TopoDS_Face, F2: TopoDS_Face) -> None: ...
    def MoreIntersection(self) -> bool: ...
    def NextIntersection(self) -> None: ...
    def RejectedFaces(self, anObj: TopoDS_Shape, aReference: TopoDS_Shape, aListOfShape: TopTools_ListOfShape) -> None: ...
    def Shape(self, Index: int) -> TopoDS_Shape: ...

class TopOpeBRep_ShapeIntersector2d:
    def __init__(self) -> None: ...
    def ChangeEdgesIntersector(self) -> TopOpeBRep_EdgesIntersector: ...
    def CurrentGeomShape(self, Index: int) -> TopoDS_Shape: ...
    def DumpCurrent(self, K: int) -> None: ...
    def Index(self, K: int) -> int: ...
    def InitIntersection(self, S1: TopoDS_Shape, S2: TopoDS_Shape) -> None: ...
    def MoreIntersection(self) -> bool: ...
    def NextIntersection(self) -> None: ...
    def Shape(self, Index: int) -> TopoDS_Shape: ...

class TopOpeBRep_ShapeScanner:
    def __init__(self) -> None: ...
    def AddBoxesMakeCOB(self, S: TopoDS_Shape, TS: TopAbs_ShapeEnum, TA: Optional[TopAbs_ShapeEnum] = TopAbs_SHAPE) -> None: ...
    def BoxSort(self) -> TopOpeBRepTool_BoxSort: ...
    def ChangeBoxSort(self) -> TopOpeBRepTool_BoxSort: ...
    def Clear(self) -> None: ...
    def Current(self) -> TopoDS_Shape: ...
    def Index(self) -> int: ...
    @overload
    def Init(self, E: TopoDS_Shape) -> None: ...
    @overload
    def Init(self, X: TopOpeBRepTool_ShapeExplorer) -> None: ...
    def More(self) -> bool: ...
    def Next(self) -> None: ...

class TopOpeBRep_VPointInter:
    def __init__(self) -> None: ...
    def ArcOnS1(self) -> TopoDS_Shape: ...
    def ArcOnS2(self) -> TopoDS_Shape: ...
    def ChangeKeep(self, keep: bool) -> None: ...
    def Edge(self, I: int) -> TopoDS_Shape: ...
    @overload
    def EdgeON(self, Eon: TopoDS_Shape, Par: float, I: int) -> None: ...
    @overload
    def EdgeON(self, I: int) -> TopoDS_Shape: ...
    def EdgeONParameter(self, I: int) -> float: ...
    def EdgeParameter(self, I: int) -> float: ...
    def EqualpP(self, VP: TopOpeBRep_VPointInter) -> bool: ...
    def GetShapes(self) -> Tuple[int, int]: ...
    @overload
    def Index(self, I: int) -> None: ...
    @overload
    def Index(self) -> int: ...
    def IsInternal(self) -> bool: ...
    def IsMultiple(self) -> bool: ...
    def IsOnDomS1(self) -> bool: ...
    def IsOnDomS2(self) -> bool: ...
    def IsVertex(self, I: int) -> bool: ...
    def IsVertexOnS1(self) -> bool: ...
    def IsVertexOnS2(self) -> bool: ...
    def Keep(self) -> bool: ...
    def PThePointOfIntersectionDummy(self) -> TopOpeBRep_PThePointOfIntersection: ...
    def ParameterOnArc1(self) -> float: ...
    def ParameterOnArc2(self) -> float: ...
    def ParameterOnLine(self) -> float: ...
    def ParametersOnS1(self) -> Tuple[float, float]: ...
    def ParametersOnS2(self) -> Tuple[float, float]: ...
    def ParonE(self, E: TopoDS_Edge) -> Tuple[bool, float]: ...
    def SetPoint(self, P: IntPatch_Point) -> None: ...
    def SetShapes(self, I1: int, I2: int) -> None: ...
    @overload
    def ShapeIndex(self) -> int: ...
    @overload
    def ShapeIndex(self, I: int) -> None: ...
    @overload
    def State(self, I: int) -> TopAbs_State: ...
    @overload
    def State(self, S: TopAbs_State, I: int) -> None: ...
    def SurfaceParameters(self, I: int) -> gp_Pnt2d: ...
    def Tolerance(self) -> float: ...
    def TransitionLineArc1(self) -> IntSurf_Transition: ...
    def TransitionLineArc2(self) -> IntSurf_Transition: ...
    def TransitionOnS1(self) -> IntSurf_Transition: ...
    def TransitionOnS2(self) -> IntSurf_Transition: ...
    def UpdateKeep(self) -> None: ...
    def Value(self) -> gp_Pnt: ...
    def Vertex(self, I: int) -> TopoDS_Shape: ...
    def VertexOnS1(self) -> TopoDS_Shape: ...
    def VertexOnS2(self) -> TopoDS_Shape: ...

class TopOpeBRep_VPointInterClassifier:
    def __init__(self) -> None: ...
    def Edge(self) -> TopoDS_Shape: ...
    def EdgeParameter(self) -> float: ...
    def VPointPosition(self, F: TopoDS_Shape, VP: TopOpeBRep_VPointInter, ShapeIndex: int, PC: TopOpeBRep_PointClassifier, AssumeINON: bool, Tol: float) -> TopAbs_State: ...

class TopOpeBRep_VPointInterIterator:
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, LI: TopOpeBRep_LineInter) -> None: ...
    def ChangeCurrentVP(self) -> TopOpeBRep_VPointInter: ...
    def CurrentVP(self) -> TopOpeBRep_VPointInter: ...
    def CurrentVPIndex(self) -> int: ...
    @overload
    def Init(self, LI: TopOpeBRep_LineInter, checkkeep: Optional[bool] = False) -> None: ...
    @overload
    def Init(self) -> None: ...
    def More(self) -> bool: ...
    def Next(self) -> None: ...
    def PLineInterDummy(self) -> TopOpeBRep_PLineInter: ...

class TopOpeBRep_WPointInter:
    def __init__(self) -> None: ...
    def PPntOn2SDummy(self) -> TopOpeBRep_PPntOn2S: ...
    def Parameters(self) -> Tuple[float, float, float, float]: ...
    def ParametersOnS1(self) -> Tuple[float, float]: ...
    def ParametersOnS2(self) -> Tuple[float, float]: ...
    def Set(self, P: IntSurf_PntOn2S) -> None: ...
    def Value(self) -> gp_Pnt: ...
    def ValueOnS1(self) -> gp_Pnt2d: ...
    def ValueOnS2(self) -> gp_Pnt2d: ...

class TopOpeBRep_WPointInterIterator:
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, LI: TopOpeBRep_LineInter) -> None: ...
    def CurrentWP(self) -> TopOpeBRep_WPointInter: ...
    @overload
    def Init(self, LI: TopOpeBRep_LineInter) -> None: ...
    @overload
    def Init(self) -> None: ...
    def More(self) -> bool: ...
    def Next(self) -> None: ...
    def PLineInterDummy(self) -> TopOpeBRep_PLineInter: ...

#classnotwrapped
class TopOpeBRep_traceSIFF: ...

# harray1 classes

class TopOpeBRep_HArray1OfVPointInter(TopOpeBRep_Array1OfVPointInter, Standard_Transient):
    def __init__(self, theLower: int, theUpper: int) -> None: ...
    def Array1(self) -> TopOpeBRep_Array1OfVPointInter: ...


class TopOpeBRep_HArray1OfLineInter(TopOpeBRep_Array1OfLineInter, Standard_Transient):
    def __init__(self, theLower: int, theUpper: int) -> None: ...
    def Array1(self) -> TopOpeBRep_Array1OfLineInter: ...

# harray2 classes
# hsequence classes

